import 'dart:io';

main(){
  print('程序开始');
  getFirstData().then((res){
    print('第一个函数返回的数据:$res');
    return getSecondData();
  }).then((res){
    print('第二个函数返回的数据:$res');
    return getThirdData();
  }).then((res){
    print('第三个函数返回的数据:$res');
  }).catchError((error){
    //可以捕获前面的错误
    print('请求数据失败:$error');
  }).whenComplete((){
    print('结束，不管成功失败，都关闭弹窗');
  });
  print('执行逻辑完成，程序结束,其他的业务代码，不会被阻塞');

}

//第一个获取数据的函数
Future<int> getFirstData(){
  return new Future(() {
    sleep(Duration(seconds: 2));
    print('第一个函数执行完成');
    return 22;
  });
}
//第二个获取数据的函数
Future<String> getSecondData(){
  return new Future(() {
    sleep(Duration(seconds: 2));
   print('第二个函数执行完成');
 // throw  '第二个函数执行失败';

    return '222';
  });
}
//第三个获取数据的函数
Future<String> getThirdData(){
  return new Future(() {
    sleep(Duration(seconds: 2));
    print('第三个函数执行完成');
    return '333';
  });
}

